import request from '@/utils/request.js';

/**
 * AI图像编辑接口
 * @param {Object} data - 编辑参数
 * @param {String} data.command - 编辑指令代码 (id_photo, avatar, art_photo)
 * @param {Array<String>} data.imageUrls - 图片URL列表
 * @param {String} data.size - 图片尺寸，可选
 * @param {String} data.quality - 图片质量，可选
 * @param {Boolean} data.isPublic - 是否公开，可选
 * @returns {Promise<Number>} 返回编辑任务ID
 */
export function editImage(data) {
  return request.post('/ai/image/edit', data);
}

/**
 * 获取我的图像编辑记录分页
 * @param {Object} params - 分页参数
 * @param {Number} params.pageNo - 页码，默认1
 * @param {Number} params.pageSize - 每页大小，默认10
 * @returns {Promise<Object>} 分页结果
 */
export function getMyImagePage(params = {}) {
  const { pageNo = 1, pageSize = 10, ...otherParams } = params;
  
  return request.get('/ai/image/my-page', {
    pageNo,
    pageSize,
    ...otherParams
  });
}

/**
 * 获取公开的图像编辑记录分页
 * @param {Object} params - 分页参数
 * @param {Number} params.pageNo - 页码，默认1
 * @param {Number} params.pageSize - 每页大小，默认10
 * @returns {Promise<Object>} 分页结果
 */
export function getPublicImagePage(params = {}) {
  const { pageNo = 1, pageSize = 10, ...otherParams } = params;
  
  return request.get('/ai/image/public-page', {
    pageNo,
    pageSize,
    ...otherParams
  });
}

/**
 * 获取我的图像编辑记录详情
 * @param {Number} id - 记录ID
 * @returns {Promise<Object>} 图像记录详情
 */
export function getMyImage(id) {
  return request.get('/ai/image/get-my', { id });
}

/**
 * 删除我的图像编辑记录
 * @param {Number} id - 记录ID
 * @returns {Promise<Boolean>} 删除结果
 */
export function deleteMyImage(id) {
  return request.delete('/ai/image/delete-my', { id });
}

/**
 * 生成图片
 * @param {Object} data - 生成参数
 * @param {String} data.prompt - 提示词
 * @param {String} data.model - 模型名称
 * @param {String} data.width - 图片宽度
 * @param {String} data.height - 图片高度
 * @param {String} data.options - 其他选项
 * @returns {Promise<Number>} 生成任务ID
 */
export function drawImage(data) {
  return request.post('/ai/image/draw', data);
}

/**
 * 分析图片
 * @param {Object} data - 分析参数
 * @param {String} data.prompt - 分析提示词
 * @param {String} data.model - 模型名称
 * @param {String} data.imageUrls - 图片URL列表
 * @returns {Promise<Object>} 分析结果
 */
export function analyzeImage(data) {
  return request.post('/ai/image/analyze', data);
}

/**
 * 获取用户剩余图片生成次数
 * @returns {Promise<Number>} 剩余生成次数
 */
export function getRemainingCount() {
  return request.get('/ai/image/remaining-count');
}

/**
 * 获取图像编辑支持的指令列表
 * @returns {Array} 指令列表
 */
export function getSupportedCommands() {
  return [
    { code: 'id_photo', name: '证件照', description: '标准证件照格式，白色背景' },
    { code: 'avatar', name: '头像', description: '社交平台头像，背景简洁' },
    { code: 'art_photo', name: '艺术照', description: '艺术照风格，增强美感和艺术效果' }
  ];
}
